примергде-то надо еще таймером будет. просто по идее система работает так: происходит событие изменения ресурса (запоминаем сколько), следом происходит основное событие (покупка-продажа). значит, здесь ловим итем, потом вычисления с налогами. Но такой порядок бывает не всегда. Вот допустим продажа: сначала продаем (итем забирают, событие продажи), потом дают деньги (событие изменения ресурса). как видишь, здесь надо тогда таймером через 0.00 сек или сколько то сек проверять измену реса
хотел реализовать похожую систему (проводить торговлю не через чат, а через кнопочки). только на мем хаке. изменить можно только в мем хаке. если вы изменяете цену типу предмета, тогда она у всех итемов данного типа меняется. сделал так: копию на каждого игрока, у одного будет одна цена, у другого другая. короче каждый игрок товар может предложить по разной цене. как это будет работать пока не знаю (я не все продумал, и поэтому не доделал).
можно стоимость убрать и триггерами начислять/убавлять
используй подходящие константы к конкретным событиям триггера.
продажа итема
событие - юнит закладывает предмет в лавку
переменные:
GetSellingUnit() =продающий торговец (типа всякие предметы закладывает в магазин и получает деньги)
GetBuyingUnit()=GetTriggerUnit() = покупающий торговец (это обычно магазин)
покупка итема
событие - продает предмет (из лавки)
GetSellingUnit()=GetTriggerUnit() =продающий торговец (в данном случае магазин продает нам)
GetBuyingUnit() = покупающий торговец (это наш герой отдает денюшку, а сам получает артефает или лошадь)
А предмет который продают или покупают
GetSoldItem()
Вджасс это дополнение к обычному джассу, у себя ты можешь видеть строки объявления библиотеки, продвинутые комментарии и статические константные переменные
Возможно у тебя реально проблема в последней, например он сканирует список всех карт, находит какое-то непотребство и падает в ошибку, надо проследить и почистить этот путь
Я не понимаю как работать без него, особенно без ро
В идее выбираешь режим редактор, а не игры, и работаешь в редакторе как обычно
Такой ауры нету, есть аура на бонус атаки (наверн, это не то, что вам нужно). можешь посмотреть список
Можно сделать триггерно, делаешь ауру пустышку. Потом систему урона, в этой системе проверяешь наличие баффа ауры. Наносишь доп урон. Ну, и конечно, надо знать какой дамаг от магии, или физическ. Это тоже надо подумать. Вроде, столько систем на определения придумано
можно еще каждые 2-3 сек выделять всех вокруг кастера в группу и что-то делать с этими юнитами, добавляя им бонусы: реген, защита и пр
Если заклинания триггерные, то можно проверять висит ли на кастере бафф, и увеличивать дамаг. Многие стандартные способности можно сделать триггерно
GearOfRage, в данном случае надо тестировать кампанию, а не саму карту. Открываешь через игру доп кампанию и играешь нужную миссию (для этого надо сделать все миссии временно доступными)
Виджитайзер норм, если правильно все делать. Ultimate Slk Opt быстрый, но надо держать ухо в остро, то будет карта с иероглифами. AntiMage:
quq_CCCP, виджитайзер слишком медленный, Ultimate opt непонятный, +они оба ведь защишают карту, мне этого ненужно тоесть я хочу чтоб мои обьектные данные о войсках и.т.д обратно восстановились когда угодно, чтоб world editor мог открывать
А нах юному IceFrog'у понадобилась слк оптимизация? Тем более виджитайзер ничего не защищает, но чтобы работать с данными карты в редакторе достаточно распаковать их из карты в папку с варом и все, странно что у вас нет других проблем о которых бы следовало спросить на форуме.
логика такова
цикл от 1 до всех предметов в карте призван Установить для Каждого Item_Init[Cnt_Item_Init]
Значение взятое из SetItemUserData
для удобства занес эти Значения в Переменную типа Массив чтобы Оперировать с ними там где мне это нужно
и когда в инвентаре окажется Индекс этого предмета я буду знать что этот предмет мне нужен для Удаления
для этого есть функция
function F_H_Section_ReturnItem takes unit u, integer id returns nothing
set Cnt_Inv = 0
loop
exitwhen Cnt_Inv > Min_Inv
set ItemsInSlots[Cnt_Inv] = UnitItemInSlot(u, Cnt_Inv)
if LoadBoolean(H, StringHash("H"), StringHash("RemoveItems")) then
call SaveBoolean(H, StringHash("H"), StringHash("RemoveItems"), false)
call RemoveItem(ItemsInSlots[Cnt_Inv])
else
if GetItemTypeId(ItemsInSlots[Cnt_Inv]) == id then
call SaveBoolean(H, StringHash("H"), StringHash("RemoveItem"), true)
call RemoveItem(ItemsInSlots[Cnt_Inv])
endif
endif
set Cnt_Inv = Cnt_Inv + 1
endloop
set Cnt_Inv = 0
loop
exitwhen Cnt_Inv > Min_Inv
set ItemsInSlots[Cnt_Inv] = null
set Cnt_Inv = Cnt_Inv + 1
endloop
endfunction
достаточно одно SaveBoolean и готово
а дальше Создание предмета ПО Индексу расположенный в Item_Init
call SaveBoolean(H, StringHash("H"), StringHash("RemoveItems"), false)
призван удалить Все предметы из инвентаря Без проверки GetItemTypeId
либо использовать вариант который написал nazarpunk:
тут уже мне решать
function F_Pick_Item takes nothing returns nothing
set Cnt_Item_Init = 1
loop
exitwhen Cnt_Item_Init > Item_Init_Number_End
call SaveBoolean(H, StringHash("H"), StringHash("ItemUserDataSave"), true)
call SaveItemHandle(H, StringHash("H"), StringHash("ItemUserData"), GetManipulatedItem())
if GetItemTypeId(GetManipulatedItem()) == Item_Init[Cnt_Item_Init] then
set ItemUserDataMas[ItemUserDataAmount] = Cnt_Item_Init
endif
set Cnt_Item_Init = Cnt_Item_Init + 1
endloop
call F_H_Section_ItemUserData()
Ну если взять стандартное мили 1х1, где обычно катки длятся 10-15 минут, то думаю афк на 2 минуты уничтожит игрока на первых 10 минутах. Если катка затянулась на полчаса, то афк 5-10 минут может уничтожить игрока. Если игра затянулась на 10 часов, то думаю, часок можно и поафкашить.
Вот тут афк на 6.5 часов было норм для игроков
Так что все зависит от игры, геймплея, условий, где это критично а где нет. Может быть у тебя будет не конкретное число минут для определения афк и передача войск союзнику, а прогрессирующая шкала, чем дальше катка тем дольше можно быть афк, ибо самая жара действий обычно происходит на старте-середине игры.
И я не уверен, что стоит кикать игрока, можно просто передать контроль союзникам, пока он не вернется. Но это уже твоя авторская идея и система, как посчитаешь правильным для своей карты.
И да, АФК - от англ. AFK = Away From Keyboard, что в переводе отошел от клавиатуры.
Создай изображение размером 256x256. Конвертируй его в формат TGA. Переименуйте в war3mapPreview.tga и загрузите в карту, в карте уберите путь war3mapimported
WW перестаёт становиться DIS, когда у героя более одной абилки WW
типа что бы ты мог активировать другой, пока работает первый... но разблокировка идёт на все сразу (и на сам себя тоже)
Extremator предлагает делать переключение через выделения таверн через триггеры. Выделение с одной снял, выделение на другую переключил.
Хоттаб, предлагаю другой вариант - ОДНУ таверну со всеми героями. пример с итемами, там переключение система 14 верс
есть пример, тоже самое можно сделать например для героев. По идее можно всех-всех героев заранее забить в таверну. Так можно сделать ОДНУ таверну со всеми героями, но с переключением списков. Так можно сделать, это надо в РО забить всех героев в таверну, если не получается пробуйте через клавишу Shift. Но будет отображаться только первые 10-12, остальные не вместятся на панеле. Поэтому надо разбить героев на списки.
Можно спрятать всех героев, кроме определенных героев, находящей на первой странице. А когда нажимаешь, то прячешь для игрока одних героев на 1 странице, и показываешь других героев на след странице.
как прятать героев вот ссылкакогда задаешь лимит обучения данного типа ноль, то иконка этого героя исчезает. прячешь одних. разблокируешь других.
Еще раз, 'Aams' - щит от магии, он дает маг имун и только. 'Aam2' - нейтрализует урон от магии, при этом в цель можно применять заклинания, обрати внимание там другой бафф.
Для каждого дерева нужны три модели: обычная, неактивная (с названием Doodads\Terrain\AshenTree\AshenTree0S.mdx, например) и неактивная разрушенная (Doodads\Terrain\AshenTree\AshenTree0D.mdx). У неактивных моделей должна быть только одна анимация — Stand. У первой — только деревце, у второй — только пенёк, соответственно.
Когда с деревом никто не взаимодействует, отображаются неактивные модели. Ты их не заменил, потому такая вот фигня.
Как сделать полноценно работающие деревья с моделями, не заменяющими стандартные, я не знаю. Возможно, никак.
Мб оно связано с морфом, или с какими то параметрами заклинания - в доте аватар превращал тинкера в танк..
Можно попробовать морфнутся в альтернативного тинкера скиллом 'Aave' - превратится в сфинкса, тогда он навсегда останется тинкером в ульте.
Не должно так критовать. А ты добавлял юнитов в unit ui slk и unit abilities slk? Туда тоже надо добавлять.
Ещё желательно править не neutral unit string, а human unit string или orc unit string.
Кроме того, надо править human unit func. txt или orc unit func. txt
Далее: custom v0 и melee v0 не обязательно править, достаточно добавить файлы в папку units архива и в папку custom v1. просто непонятно, зачем делать юнитов для версии Roc
SirDragdord, никак, последние патчи баганые, там много чего не работает, играть там не вочто, хотите поиграть - 1.26а к вашим услугам, старшие патчи вара только для ознакомления и обучения, пока не вышел рефордж там нечего делать.
Кажется проблему решили, ответ крылся в текстурах, скорее всего в типе сжатия Sequental JPEG при пресохранени с другим типом сжатия (Пересохранил текстуры в тга и обратно в блп) - проблема решилась (По крайней мере сейчас так кажется).
Из чего могу предположить, то при определенных обстоятельства Варик или система неадекватно воспринимает текстуры с этим типом сжатия и выпадает
Создаем целочисленную переменную.
В редакторе тригеров:
Действия: Время суток становится 6 утра
Условия: Ставим если надо
Действия:
Установить переменная + 1
Вывести текст на экран наша переменная
library RPGText
globals
private unit array s
private real array d
endglobals
function displayTextExp takes nothing returns nothing
local timer t = GetExpiredTimer()
local unit u = s[GetHandleId(t)]
local real r = d[GetHandleId(u)]
// дальше уже можно шаманить с текстом
// Очишаем утечки
call DestroyTimer(t)
set u = null
// А также очистка массива
//
//
//
endfunction
function createText takes unit u, real r, code c returns nothing
local integer i = GetHandleId(u)
local timer t
if d[i] == 0 then
set t = CreateTimer()
// Записиваем значение
set s[GetHandleId(t)] = u
set d[i] = r
call TimerStart(t, 0.03, false, c)
set t = null
else
set d[i] = d[i] + r // Увеличивает число
endif
set u = null
endfunction
endlibrary
Такую систему сделать можно, но через создание локальных (через локальные переменные) триггера входа в область, области, таймера и принудительной смены координат входящего в область юнита, после проверки на владельца юнита, с добавлением спецэффектов в точке входа и в точке перемещения. После истечения таймера удалить область, таймер и триггер. Получится временный портал, работающий на опрелеленных юнитов. Такая система будет MUI, но её не получится сделать с помощью только GUI... придётся кодить
Нашёл систему, где звук передаётся в таймер, который истекает через 0 секунд. В результате один и тот же звук может проигрываться несколько раз без всяких проблем. В инетике пишут мол это такой баг движка.
Юнитов поднимает тогда же, когда и опускает, потому что я удаляю их из DedG[3], но забываю удалить из группы снарядов, таким образом, к тем кто попал под падение, уже навечно задействован акт снарядов(опускание), пока они в DedG[3]
похоже более всего на мусор, попадающий в память откуда-то извне. Обычно пропущенная строка автокаста такой фигней страдает. Нельзя точно сказать, нужно менять поля и смотреть. К счастью, описания можно менять и локально, не перепаковывая карту
можно задать постоянную музыку при входе юнита в область.
А выключать её по событию "юнит покидает область".
Они же рядом события эти, чего усложнятьв сё.
Ну, только массивами. У тебя просто нет бд, где прописаны области.
Либо, вы берете записываете бд:
R - массив областей rect, это прямокгольные области rectangle
В триггере инициализайии прописываешь все массивы:
R [1] = область 0001
R [2] = область 0002
R [3] = область 0003
Когда нужно, создать юнита в ранд точке в R [ random от 1 до 3]
Другой вариант. Есть только регион Region, но там не помню как работает. В него можно засунуть несколько rect. Есть функция добавления области в регион. Но аот применять этот регион сложна. Я помню есть функция, поищи: рандомная точка в регион. Ты можешь сразу спавнить в рандом точке. К сожалению, не нашел нв хигаме GetRandomPointInRegion()
Просто используй не рынок а любой другой юнит со способностью "продажа предметов" и чекни.
кстати идея то годная, насчёт рынка как комод для переодевания.
Эта проблема вызывается физическими повреждениями железа, как я нагуглил
Детали так сходу не скажу, но SFile.cpp - кусок storm.dll, вроде как обработчик строк
Создай новый триггер
событие- Боевая единица входит в нужную область (A Units enters MYREGION)
условие - Боевая единица - Мой Герой (Unittype или Unit Comparison /+ Player comparison)
действие - Победа (Игра-Victory)
Предварительно создай область MYREGION
Удалить дебафф в момент отлова урона. Его продолжительность не имеет в таком случае никакого значения.
В версии 1.31 можно проверить тип получаемого/наносимого урона. Урон типа NORMAL всегда идет от атаки.
Set mana = get mana + 1
Если тебе текущее значение поменять
Это как поставить целых 2? У меня только так получается))
Вместо 1.00 кликни на значение и найди параметр "Arifmetic"/"Arithmetic" или "Арифметика", если русифицирован редактор.
Там поставь вместо value + 1 то, что выше сказал Borodach.
Артилерия - не годится для героев и для тех кто может иметь орбы, иначе игра падает.
Выбери - Снаряд Взрыв, а чтобы можно было стрелять по местности, сделай абилку из канала и триггер который создает дамми юнита в указанном месте и приказывает герою стрелять по этому дамику.
Перенеси все строки, где личный сценарий local xxx = xxxx, в самый верх действий, перед All remove, и все ок будет
И да, саму All remove , без udg_, редактор будет ругать как необъявленную, либо сделай её тоже как local
Gerych, сюда тоже можно но вопрос будет закрыт через неделю с момента последнего ответа
ну а вообще для таких вещей стоит создать бложик и там в качестве ресурса подобное спрашивать
» WarCraft 3 / Продажа предметов
» WarCraft 3 / Вылезает ошибка(только эта)
» WarCraft 3 / Прогрузка карты в редакторе
» WarCraft 3 / Аура дамага
» WarCraft 3 / Проблема с созданием предмета
» WarCraft 3 / Герой: Hogger
» WarCraft 3 / Зрители
» WarCraft 3 / Проблема с тестом карты
» WarCraft 3 / Изображение
» WarCraft 3 / Редактор на заказ
» WarCraft 3 / ИИ героев
» WarCraft 3 / Невосприимчивость к аурам
» WarCraft 3 / Вариации моделей юнита.
» WarCraft 3 / Карта не запускается
» WarCraft 3 / Сделайте наработку.
» WarCraft 3 / Undead Doodad Pack
» WarCraft 3 / Как обнулить данный тип переменной
» WarCraft 3 / области
» WarCraft 3 / Неизвестная ошибка
» WarCraft 3 / Вопрос по триггерам
» WarCraft 3 / Ошибка
» WarCraft 3 / влияние ауры на здание